home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
CRS
/
crs10.d81
/
dark88-4.sfx
/
m.1670.a1
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1990-02-12
|
4KB
|
236 lines
1000 REM * DARKTERM '88
1010 REM * 1670 MODEM FILE SOURCE
1020 REM *
1030 OPEN1,8,15,"S0:D'88.1670":CLOSE1
1040 OPEN2,8,1,"0:D'88.1670"
1050 SYS700
1060 .OPT O2
1070 ;
1080 CHKIN =$FFC6 ; KERNEL EQUATES
1090 CHKOUT =$FFC9
1100 CHRIN =$FFCF
1110 CHROUT =$FFD2
1120 CLRCHN =$FFCC
1130 GETIN =$FFE4
1140 ;
1150 PTR =138 ; TEMPORARY POINTERS
1160 ST =140
1170 PREFIX =930 ; DIALING PREFIX
1180 PRELEN =929 ; PREFIX LENGTH
1190 ;
1200 DETECT =922 ; CARRIER DETECT FLAG
1210 DDELAY =927 ; DIALING DELAY
1220 WDELAY =926 ; CARRIER WAIT DELAY
1230 HDELAY =925 ; ON-HOOK DELAY
1240 ;
1250 *=$4500 ; STARTS HERE UP TO $47FF
1260 ;
1270 JMP ANSWER ; AUTO-ANSWER
1280 JMP DODIAL ; AUTO-DIAL
1290 JMP ONHOOK ; LABEL SAYS ALL
1300 JMP OFHOOK ; OFF HOOK
1310 JMP CARCHK ; LOST CARRIER CHECK
1320 JMP CUSTOM ; USER DEFINED ROUTINE
1330 JMP HANGUP ; HANGUP ROUTINE
1340 ;
1350 DODIAL STX PTR ; X/Y POINT TO DIAL
1360 STY PTR+1 ; STRING (18 DIGITS)
1370 JSR RETURN ; SEND 2 <CR> TO BEGIN
1380 LDA HDELAY ; WAIT SOME
1390 JSR WAIT
1400 LDX #5
1410 JSR CHKOUT
1420 LDY #0
1430 DODO1 CPY PRELEN ; CHECK LENGTH
1440 BEQ DODO2 ; BEFORE SENDING IN CASE
1450 LDA PREFIX,Y ; THERE IS NO PREFIX
1460 JSR MODOUT
1470 INY
1480 BNE DODO1
1490 DODO2 LDY #0
1500 DODO3 LDA (PTR),Y ; GET STRING
1510 CMP #32 ; SKIP ALL BLANKS
1520 BEQ DODO4
1530 AND #127 ; MASK FOR ASCII
1540 JSR MODOUT
1550 DODO4 INY
1560 CPY #18 ; DO ALL 18 BYTES
1570 BNE DODO3
1580 LDA #13 ; SEND THE <CR>
1590 JSR MODOUT
1600 JSR CLRCHN
1610 LDA WDELAY ; AND WAIT FOR CARRIER
1620 JSR WAIT
1630 LDA 56577 ; HAVE ONE
1640 AND #16
1650 BEQ DODO5 ; YES
1660 SEC ; NOT ABORTED, SET C FLAG
1670 LDA #0 ; NO CARRIER, SET Z FLAG
1680 RTS
1690 DODO5 SEC ; SET C FLAG
1700 LDA #1 ; CARRIER, CLEAR Z FLAG
1710 RTS
1720 ;
1730 WAIT TAX
1740 W0 JSR CLRTIM ; CLEAR TI CLOCK
1750 W1 LDA 145 ; CHECK STOP KEY
1760 CMP #$7F
1770 BEQ W2 ; IF PRESSED, ABORT
1780 LDA 162
1790 CMP #60 ; ONE SECOND
1800 BCC W1
1810 DEX ; X NUMBER OF TIMES
1820 BEQ W3
1830 BNE W0
1840 W2 PLA
1850 PLA
1860 CLC ; CLEAR C FLAG - USER ABORTED
1870 W3 RTS
1880 ;
1890 ONHOOK LDA #70 ; WAIT ONE SEC...
1900 JSR JIFFY
1910 LDX #5
1920 JSR CHKOUT
1930 LDA #"+" ; SEND +++ SEQUENCE
1940 JSR MODOUT
1950 JSR MODOUT
1960 JSR MODOUT
1970 JSR CLRCHN
1980 LDA #70 ; WAIT ONE MORE SEC...
1990 JMP JIFFY
2000 ;
2010 OFHOOK JSR SMART ; OFF-HOOK
2020 .ASC "ATD"
2030 .BYT 13,0
2040 RTS
2050 ;
2060 SMART LDA 56577 ; SEND AT COMMANDS
2070 AND #16
2080 BNE SM1
2090 JSR ONHOOK ; HANG UP UNTIL NO
2100 JMP SMART ; CARRIER
2110 SM1 PLA ; GET STRING ADDRESS FROM
2120 STA ST ; RETURN ADDRESS
2130 PLA
2140 STA ST+1
2150 LDX #5
2160 JSR CHKOUT
2170 LDA #40 ; WAIT >.5 SEC...
2180 JSR JIFFY
2190 SM2 INC ST
2200 BNE SM3
2210 INC ST+1
2220 SM3 LDY #0
2230 LDA (ST),Y ; SEND COMMAND
2240 BEQ SM4
2250 JSR MODOUT
2260 JMP SM2
2270 SM4 JSR CLRCHN
2280 LDA #40 ; WAIT SOME MORE
2290 JSR JIFFY
2300 LDA ST+1 ; PUSH NEW RETURN ADDRESS
2310 PHA
2320 LDA ST
2330 PHA
2340 RTS
2350 ;
2360 MODOUT JSR CHROUT
2370 MODO1 LDX 669 ; WAIT FOR RS232 TO
2380 CPX 670 ; (null) IDLE BEFORE SENDING
2390 BNE MODO1 ; AGAIN
2400 RTS
2410 ;
2420 RETURN LDX #5
2430 JSR CHKOUT
2440 LDA #13
2450 JSR MODOUT
2460 JSR MODOUT
2470 JMP CLRCHN
2480 ;
2490 CUSTOM RTS ; NONE NEEDED FOR 1670
2500 ;
2510 CARCHK BIT DETECT ; IF DETECT IS
2520 BPL CAR1 ; 0 THEN IGNORE CARRIER
2530 LDA $DD01
2540 AND #16
2550 BEQ CAR1
2560 CLC ; DROPPED CARRIER
2570 RTS ; SO CLEAR C FLAG
2580 CAR1 SEC
2590 RTS
2600 ;
2610 CLRTIM LDA #0
2620 STA 160
2630 STA 161
2640 STA 162
2650 RTS
2660 ;
2670 JIFFY TAX ; WAIT SOME JIFFIES
2680 JSR CLRTIM
2690 JIF1 CPX 162
2700 BCS JIF1
2710 RTS
2720 ;
2730 ANSWER JSR RESET ; RESET MODEM
2740 ANS0 JSR SMART ; SEND AT ACK
2750 .ASC "AT"
2760 .BYT 13,0
2770 LDX #5
2780 JSR CHKIN
2790 JSR GETIN
2800 PHA
2810 JSR CLRCHN
2820 PLA
2830 AND #127
2840 CMP #"0" ; WAIT FOR OKAY RESPONSE
2850 BNE ANS0
2860 ANS1 LDX #5
2870 JSR CHKIN
2880 JSR GETIN ; WAIT FOR NUMERICAL
2890 PHA ; RESPONSE
2900 JSR CLRCHN
2910 PLA
2920 AND #127 ; DISCARD BIT 7
2930 CMP #"1" ; 300 BAUD
2940 BEQ ANS2 ; YES
2950 CMP #"5" ; 1200 BAUD
2960 BEQ ANS3 ; YES
2970 JSR GETIN ; GET KEY FROM KEYBOARD
2980 CMP #0
2990 BEQ ANS1
3000 CLC
3010 RTS
3020 ANS2 LDX #<300
3030 LDY #>300
3040 BNE ANS4
3050 ANS3 LDX #<1200
3060 LDY #>1200
3070 ANS4 SEC
3080 RTS
3090 ;
3100 RESET LDA $29B
3110 STA $29C
3120 JSR SMART
3130 .ASC "ATZ"
3140 .BYT 13,0
3150 LDA #75
3160 JSR JIFFY
3170 LDA $29B
3180 STA $29C
3190 JSR SMART
3200 .ASC "AT V0 M0 X1"
3210 .BYT 13,0
3220 LDA #75
3230 JMP JIFFY
3240 ;
3250 HANGUP JSR ONHOOK ; SEND +++ SEQ.
3260 JSR SMART ; SEND COMMAND STRING
3270 .ASC "ATD"
3280 .BYT 13,0
3290 LDA $DD01
3300 AND #16 ; CHECK CARRIER
3310 BEQ HANGUP ; STILL THERE, TRY MORE
3320 LDA $29B
3330 STA $29C
3340 RTS